来源: 【Windows】文件夹被占用删除不掉_Energet!c的博客-CSDN博客
1、打开任务管理器

2、打开资源监视器

3、点击“CPU” 输入占用文件夹名称

4、结束任务

来源: ChatGPT如何注册使用(解决国外手机号验证码问题)_小懒懒懒懒的博客-CSDN博客
文章目录
一、OpenAI注册
二、国外手机号获取
三、GhatGPT初体验
一、OpenAI注册
科学/上/网/工/具
openai官网注册
二、国外手机号获取
但是注册最后需要国外手机号,我们可以从sms-active获取。
注册帐号,充值
大概0.2$(大概1.5rmb,不过最后我还剩4卢布,使用0.15 $就够了)
搜索openai,选择国家手机号(这里我选择的是印度,注意要去掉前面的(+91),直接输入后面的号码)
等待验证码
短信出现后输入即可注册成功,就可以尽情使用chatgpt啦。(我后来发现pc端直接进官网,不用登录和tz也可以用chatgpt(?)
手机和ipad则需要tz登录)
三、GhatGPT初体验
算法解释
算法举例
接下来准备学习一个项目,希望可以从chatgpt上获得一些帮助
————————————————
版权声明:本文为CSDN博主「小懒懒懒懒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yolo_______95/article/details/128456521
来源: 微信小程序将前端项目html转为wxml在线转化工具_VLilyV的博客-CSDN博客
2020.10.22更新 哎服务器的事情真麻烦,有好多小伙伴在这里给我留言发消息:服务器又又又又挂了。我很少来 直到在公众号里看到一个人说 我才知道,赶紧又去买了一个服务器o(╥﹏╥)o(该网址永久有效,防止问题出现 你们可在公众号留言讨论:wander_yun 都是技术崽进去吧):http://www.wanderyun.com/blog/wxmlto.html
背景:去年小程序很火的时候,有个需求是把官网搬到小程序,然后后来直接放弃官网,有新产品页面的时候直接写到小程序里,但是我明白,终有一天,会把这些页面全部补充到官网中的,作为前端的我,要求自己不仅要快还要考虑长远,更要考虑少做重复性的工作,于是便有了写个一键转换工具的想法,你随便折腾,我给你提供工具可好?
为避免浪费大家的时间,先上图和链接看看是不是你要的。
地址:http://www.wanderyun.com/blog/wxmlto.html
哈哈,错了,不是上面那个,不过,也是关于小程序转化的,单位转化,很有用的哦,不过,如果有了下面那个工具,你或许就不需要上面的工具了,因为你可以在小程序里先全部用上px做单位,然后一键复制转化成rpx,挺好。
好的大神来了:
看到了么就是它!
工具地址:http://www.wanderyun.com/originality/wxmlto.html(服务器已挂)
2018.08.14更新:http://www.laoyouteam.com/originality/wxmlto.html(临时服务器)
2018.10.08更新:https://vlily.github.io//originality/wxmlto.html(github以后常用 也挂了 挂了o(╥﹏╥)o)
2020.10.22更新(永久有效):http://www.wanderyun.com/blog/wxmlto.html
使用之前希望你已经弄明白小程序与普通的前端项目区别在哪里。
这些个工具是我在网上找不到的,只看到一个插件,但是我个人不太喜欢插件这个东西,觉得很不方便而且很大
个人一直觉得创造力是个好东西,他就是源于生活,就是创造出不一样的。
有问题联系我撒。下方评论或者加我公众号:wander_yun
一起探讨。
————————————————
版权声明:本文为CSDN博主「VLilyV」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/VLilyV/article/details/79479862
来源: html css 迁移微信小程序wxml wxss 修改建议 – 知乎
一般我们在微信公众号,或者其他web页面写好的html、css是可以直接迁移到微信小程序中的,但是迁移之后,需要对应的,修改一些标签和样式才行。
这里面需要细心点,否则就会出现我那篇文章中出现的问题:
下面我们分别来说下html->wxml和css->wxss
通常来说,有以下几个标签需要注意:
<div></div> —–> <view></view>
<span></span> —–> <text></text>
<a href=””> —–> <view class=”a” data-href=””></view> 或 <view class=”a” bindtap=”goHref”></view> (goHref对应在js中写,可以是navigate或者redirect,根据实际情况自己选择)
<ul></ul> —–> <view class=”ul”></view>
<li></li> —–> <view class=”li”></view>
<img src=””> —–> <image src=””></image>
对应上面的wxml中的修改
div ———-> view
span ———-> text
ul ———-> .ul
li ———-> .li
a ———-> .a 或者wxml中如果不用 class=”a” ,那就用 > 或者 空格 来做子级分层也是可以的,但是建议直接加class,如果原css中是以 .demo > a 就会方便许多
img ———–> image
基本对应的,就是上面这些。
因为每个人的编码习惯可能不同,导致细节上后期修改需要根据自己的习惯调整,但原理不变。
样式调整好,最后一步就是修改原html中的变量了,比如你用的是smart等模板引擎,那就需要将里面的{$demo}换成你在小程序中js定义获取的新变量,比如{{demo}},还有for循环换成wx:for,if判断换成wx:if 等等,这里就不一一赘述了。
来源: 宝塔 workerman wss 反向代理 socket合法域名 小程序聊天 去掉端口_我是高手高手高高手的博客-CSDN博客_socket合法域名
提前workerman已经配置好
一、带端口的配置(不在这里说配置,有其它说明教程)
小程序中聊天,需要设置socket合法域名:wss://www.xxx.com:2000
二、不带端口的设置
宝塔配置域名,处理wss通信服务
1、去域名服务商添加域名 wss.xxx.com
2、服务器申请SSL证书,并下载
3、宝塔添加域名,选纯静态即可
4、宝塔对应域名的设置,配置SSL证书,把刚刚下载的证书包打开,填充对应的内容,保存
5、宝塔对应域名的设置->配置文件,在server{ }内结尾处添加下面的内容
# 反向代理 转移到本地的websocket地址,wss://127.0.0.1:2000 ,对应 wss://card.xxxx.com:2000
location / {
proxy_redirect off;
proxy_pass https://127.0.0.1:2000;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
# 添加wss协议头专用的字段
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
主要是这两行:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
参考:
workerman配置
https://blog.csdn.net/haibo0668/article/details/106681142
https://blog.csdn.net/haibo0668/article/details/108245320
https://blog.csdn.net/haibo0668/article/details/107186152
————————————————
版权声明:本文为CSDN博主「我是高手高手高高手」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haibo0668/article/details/111356861
来源: 如何在小程序中实现 WebSocket 通信 – 腾讯云开发者社区-腾讯云
在以前的文章中,我们介绍了HTTP通讯,这种通讯有一个缺点,如果我想从直接从服务器发消息给客户端,需要客户端先发起HTTP请求后服务器才能返回数据,且后续服务器想发送数据给客户端都需要客户端先发起请求,但这种方案在一些特殊场景应用的时候非常消耗资源,比如聊天室,如果使用HTTP请求,需要客户端每隔一段时间就请求一次服务器,再由服务器返回数据。这种传统的模式带来很明显的缺点,即客户端需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。
在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。WebSocket只需要与服务器进行一次握手,即可实现实时的数据连接,并且传输协议是全双工的,服务器可以随时主动向客户端发送数据,并且WebSocket协议在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小,能明显降低服务器及客户端开销。
我们的小程序也支持WebSocket通信,如果你想为你的小程序实现聊天室、服务器推送、小程序之间数据交互等功能,那就非常有必要搭建一个WebSocket服务器来进行WebSocket通讯。这篇文章中,我们将简单介绍小程序WebSocket通信使用方法,并通过实例搭建一个WebSocket服务器。实现小程序与服务器之间的通讯。
在教程开始之前,需要搭建搭建好小程序的基础开发环境,关于如何配置,大家可以参考如何入门小程序开发这篇文章的入门教程。
既然要实现WebSocket通讯,那必须要拥有一台WebSocket服务器,服务端的环境有很多选择NodeJS、PHP、Python等大部分主流语言都可以部署WebSocket服务,今天我们将教大家使用PHP语言进行环境部署,其他语言请同学们自行部署。
我这里以Ubuntu Server 16.04 LTS为例,我们需要安装php运行环境及NginxWeb服务,同时也需要申请免费的SSL证书和域名,关于证书和域名的申请注册请参考如何快速搭建微信小程序这篇文章。注册完域名及证书申请,我们就可以开始部署服务器了!首先,登录服务器,执行下面的命令。
sudo apt update
sudo apt install php php-fpm php-curl nginx composer -y
安装完成后,使用浏览器访问你的服务器IP地址,如果看到下面的内容,则证明Web服务已经启动。

因为小程序获取远程数据,必须为HTTPS或WSS环境,所以目前搭建的环境,在小程序无法使用,接下来,我们将使用SSL证书加密小程序访问你服务器之间的流量。这里就需要刚才注册的域名及证书了。首先,将下载的证书,上传到你的服务器,并记录下这个位置。然后,我们将配置Nginx服务,以让其支持WSS流量。
我们找到/etc/nginx/conf.d文件夹,新建配置文件,为了方便后续修改,我将这里的配置文件修改为weixin.techeek.cn.conf大家可以根据自己的需求修改。
cd /etc/nginx/conf.d
sudo nano weixin.techeek.cn.conf
在nano编辑器中,我们写下下面的代码
server {
listen 443 ssl;
server_name weixin.techeek.cn;
index index.php index.html index.htm;
root /usr/share/nginx/html;
ssl_certificate /home/ubuntu/1_weixin.techeek.cn_bundle.crt;
ssl_certificate_key /home/ubuntu/2_weixin.techeek.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location ~ .php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /
{
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80 default_server;
server_name weixin.techeek.cn;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
一定注意,将文中server_name中的weixin.techeek.cn更换成你的域名。将ssl_certificate和ssl_certificate_key中证书的路径更换成你刚上传证书的路径。然后,执行下面的命令重启nginx服务。
sudo service nginx restart
之后,打开你电脑的浏览器,然后通过域名访问,注意,这里一定要在域名前加https://,比如我访问的域名https://weixin.techeek.cn/。

如果域名前有小锁标志,则证明你已经配置成功,可以开始下一步了,这里502报错不用在意,因为我们还没有搭建WebSocket服务,所以服务器会返回502错误。
基本环境配置好之后,可以登录 微信公众平台 配置通信域名了。我们点击微信公众号右侧的设置,然后找到服务器域名配置。

进入微信公众平台管理后台设置服务器配置,如上图所示,需要将你的服务器域名配置为你自己的域名。我这里的域名是weixin.techeek.cn。
上述步骤准备完成后 ,就可以撰写WebSocket服务端的代码了,我这里使用的是PHP socket即时通讯框架Workerman来进行搭建。有了这个框架,我们就可以非常方便的搭建WebSocket服务。因为本文主要讲解小程序端的WebSocket的使用,关于Workerman的详细使用教程,可以参考Workerman官方手册,本文仅做基础环境安装的介绍。
首先,我们创建一个运行WebSocket服务的目录,我这里创建名为php-websocket-server,目录位置可以自定义,我这里就将项目放在ubuntu用户的根目录下。
mkdir /home/ubuntu/php-websocket-server
cd /home/ubuntu/php-websocket-server
接下来,我们使用composer包管理器安装WebSocket运行环境。因为某些原因,国内访问composer可能会报错,所以我们需要使用国内的composer镜像。然后就可以安装Workerman了。
sudo composer config -g repo.packagist composer https://packagist.phpcomposer.com
sudo composer update
sudo composer require workerman/workerman
安装完成后,默认情况下会有三个文件,composer.json、composer.lock、vendor这三个文件,如果没有,请重新执行上面的命令。
├── composer.json
├── composer.lock
└── vendor
安装完workerman依赖文件,我们就可以撰写系统所需的代码了。使用nano编辑器,新建一个可执行的php文件,我这里创建的文件名为webSocket.php,大家可自行更改。
nano webSocket.php
代码如下
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$ws_worker = new Worker("websocket://0.0.0.0:8080");
$ws_worker->count = 4;
$ws_worker->onMessage = function($connection, $data)
{
$connection->send('hello ' . $data);
};
Worker::runAll();
这时,一个最基本的websocket服务就编辑完成了,这里的代码意思是,通过/vendor/autoload.php引入Workerman的php文件,然后在8080端口创建websocket服务,并设置进程为4个进程。然后执行onMessage回调函数,该函数接收客户端所发过来的数据$data,然后使用send方法将数据发回给客户端。
接下来,我们就可以运行服务器了,执行下面的代码即可运行。
sudo php webSocket.php start
如果看到类似下面的输出,证明我们websocket服务器已经启动,接下来就可以开始配置小程序端的代码了。

小程序连接Websocket服务器是通过wx.connectSocket()API进行连接的,为了方便连接API,我们先看看官方的文档。
|
属性 |
类型 |
是否必填 |
说明 |
|---|---|---|---|
|
url |
string |
是 |
开发者服务器 wss 接口地址 |
|
header |
Object |
否 |
HTTP Header,Header 中不能设置 Referer |
|
protocols |
Array.<string> |
否 |
子协议数组 |
|
success |
function |
否 |
接口调用成功的回调函数 |
|
fail |
function |
否 |
接口调用失败的回调函数 |
|
complete |
function |
否 |
接口调用结束的回调函数(调用成功、失败都会执行) |
我们看到只有url是必填项,其他属性可以不填,那么连接服务器就比较简单了,我们打开index.js文件,写下下面的代码。
Page({
onReady: function () {
wx.connectSocket({
url: 'wss://weixin.techeek.cn'
})
},
})
有小程序开发经验的小伙伴都知道,这里的onReady是小程序的生命周期函数,负责在小程序初次渲染完成后执行的函数,这样我们编译完小程序,小程序就自动连接服务器。现在编译一下试试,咦,好像不行啊,怎么没看到小程序有反应。我们打开控制台,点击Network按钮,如果看到类似下面的内容,就证明你的小程序已经成功链接服务器了。

这里的HTTP状态码是101,101状态码是websocket特有的状态码,我们已经成功连接搭建的服务器。但是我们能不能直观点看到已经连接服务器呢?当然可以,参考文档使用success属性,我们在其中加入回调函数。修改代码如下。
Page({
onReady: function () {
wx.connectSocket({
url: 'wss://weixin.techeek.cn',
success: function (res) {
console.log("连接服务器成功")
},
fail: function (res) {
console.log("连接服务器失败")
}
})
},
})
我们增加一个回调函数,如果服务器连接成功,向小程序控制台打印出连接服务器成功。反正打印连接服务器失败。

当然,我们也可以将成功的内容展示给小程序前端,代码如下,首先修改index.wxml代码。
<view><text>连接服务器状态:{{status}}</text></view>
然后打开index.js文件,修改代码
Page({
onReady: function () {
var myThis = this;
wx.connectSocket({
url: 'wss://weixin.techeek.cn',
success: function (res) {
myThis.setData({
status: "连接服务器成功"
})
},
fail: function (res) {
myThis.setData({
status: "连接服务器失败"
})
}
})
},
})
现在重新编译小程序,你会看到类似这样的界面。

服务器搭建我们说到,我们的服务器的代码内容是将小程序发给服务器的任意字符前加hello之后返回给小程序,现在,我们已经成功连接服务器了。接下来,我们需要修改代码,以便小程序将数据发给服务器。
官方文档中,使用wx.sendSocketMessage()API将数据发给服务器,根据官方文档,通过 WebSocket 连接发送数据。需要先wx.connectSocket连接服务器,并在 wx.onSocketOpen 回调之后才能发送。所以在调用wx.sendSocketMessage()前,需要先调用wx.onSocketOpen监听WebSocket连接是否打开。代码如下。
Page({
onReady: function () {
var myThis = this;
wx.connectSocket({
url: 'wss://weixin.techeek.cn'
})
wx.onSocketOpen(function (res) {
myThis.setData({
status: "websocket连接服务器成功"
})
})
},
})
现在,我们就可以使用wx.sendSocketMessage()发送数据到服务器了,先看看官方文档,怎么使用。
|
属性 |
类型 |
是否必填 |
说明 |
|---|---|---|---|
|
data |
string/ArrayBuffer |
是 |
需要发送的内容 |
|
success |
function |
否 |
接口调用成功的回调函数 |
|
fail |
function |
否 |
接口调用失败的回调函数 |
|
complete |
function |
否 |
接口调用结束的回调函数(调用成功、失败都会执行) |
我们只需要传data内容给API,就能发内容给服务器了,那么修代码内容如下。
Page({
onReady: function () {
var myThis = this;
wx.connectSocket({
url: 'wss://weixin.techeek.cn'
})
wx.onSocketOpen(function (res) {
wx.sendSocketMessage({
data: "你好",
success: function (res) {
console.log("数据已发给服务器")
}
})
myThis.setData({
status: "websocket连接服务器成功"
})
})
},
})
现在,我们的数据已经可以发给服务器了,可是我们还没有看到服务器返回的数据,这时,我们就该使用另一个API了,监听WebSocket 接受到服务器的消息事件wx.onSocketMessage(),该API返回服务器发出的消息。但是onReady函数是页面加载就运行的,这时服务器还没反应过来,数据返回了没收到该怎么处理?我们可以引入另一个生命周期函数onLoad,这个函数是小程序负责监听页面加载的函数,我们可以将服务器消息事件监听的API写在这里,当接收到数据,由这个函数返回相关内容。所以代码如下。
Page({
onReady: function () {
var myThis = this;
wx.connectSocket({
url: 'wss://weixin.techeek.cn'
})
wx.onSocketOpen(function (res) {
wx.sendSocketMessage({
data: "你好",
success: function (res) {
console.log("数据已发给服务器")
}
})
myThis.setData({
status: "websocket连接服务器成功"
})
})
},
onLoad: function (options) {
var myThis = this;
wx.onSocketMessage(function (res) {
myThis.setData({
message: res.data
})
})
},
})
为了方便观察服务器返回的数据,我们修改下前端,增加服务器消息监听的内容。
<view><text>连接服务器状态:{{status}}</text></view>
<view><text>服务器消息:{{message}}</text></view>
现在,重新编译,就能看到服务器返回Hello 你好的内容,我们发出的内容为你好,服务器在内容前加一个Hello然后返回给小程序。我们可以修改你好为任意内容,看看服务器能否正常返回相关内容。稍微优化下前端和后端代码,如下。
index.wxml
<button type="primary" bindtap="connect">连接webSocket服务器</button>
<button type="warn" bindtap="close">断开webSocket服务器</button>
<input placeholder="在这里输入你要发送的弹幕内容" bindblur="input"/>
<button bindtap="send">向webSocket服务器发送消息</button>
<view><text>连接服务器状态:{{status}}</text></view>
<view><text>服务器消息:{{message}}</text></view>
index.js
Page({
connect() {
var myThis = this;
wx.connectSocket({
url: 'wss://weixin.techeek.cn'
})
wx.onSocketOpen(function (res) {
myThis.setData({
status:"websocket连接服务器成功"
})
})
},
close(){
var myThis = this;
wx.closeSocket()
wx.onSocketClose(function (res) {
myThis.setData({
status: "websocket服务器已经断开"
})
})
},
send(){
var myThis = this;
wx.sendSocketMessage({
data: this.inputValue,
success: function (res) {
console.log("发送信息")
wx.showToast({
title: '已发送',
icon: 'success',
duration: 1000
})
},
fail: function (res) {
myThis.setData({
status: "请连接服务器"
})
}
})
},
input: function (e) {
this.inputValue = e.detail.value
},
onLoad: function (options) {
var myThis = this;
wx.onSocketMessage(function (res) {
myThis.setData({
message:res.data
})
wx.showToast({
title: '你收到来自服务器的消息',
icon: 'none',
duration: 2000
})
})
},
})

这样,我们就实现了向服务器发送数据,同时服务器返回数据的全部流程。
有人可能会问,这个HTTP通信方式没有区别啊,还是小程序先请求数据到服务器,然后服务器返回数据啊,我没看到什么不同。虽然表现是这样,但是现在小程序和服务器是长连接状态,服务器可以直接推送内容到小程序,不信?我们试试。打开你的服务器Websocket.php文件,将代码修改为下面的内容。
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
$worker = new Worker('websocket://0.0.0.0:8080');
$worker->onWorkerStart = function($worker){
Timer::add(10, function()use($worker){
foreach($worker->connections as $connection) {
$connection->send('你好!');
}
});
};
$worker->onMessage = function($connection, $data)
{
echo $data . "\n";
$connection->send('服务器已经收到了你的消息');
};
Worker::runAll();
然后运行服务器。
sudo php webSocket.php start
这行代码中,我们实现了小程序连接服务器后,服务器每隔10秒主动推送数据你好给小程序,无需小程序主动请求内容,同时,小程序发出的内容,可以在服务端显示。现在点击你小程序连接webSocket服务器按钮,看看效果。

然后我们向服务器发点消息试试。服务器也已经收到了小程序发出的数据。

websocket通信在小程序端还是比较简单的,赶快去自己试试吧~后续我还会介绍一篇利用websocket通讯进行聊天室搭建的教程,喜欢的小伙伴请持续关注本专栏。腾讯云联合小程序给大家带来了小程序·云开发解决方案,为开发者提供完整的云端支持,弱化后端和运维操作,使用平台原生 API 进行核心业务开发,实现快速上线和迭代。欢迎免费使用!
原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
来源: 毕业五年从月薪3000到年薪百万我掌握了哪些核心技能 – 卢松松博客
大家好,我是冰河,很多读者私信问我,自己时间不短了,随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符。想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历也没人来通知自己面试。就这样在原来的公司一天天的混日子,时间久了,感觉自己废了,就这么恶性循环着。如何破局?
首先,如果你认为自己是一个天才程序员,那么你可以不按照我说的做,因为你是天才,你可以分分钟达到甚至超过百万。如果你认为自己只是一个普通人,那好,继续往下看,相信会对你有所帮助的。

我们该如何打破自己的技术水平和工作年限严重不符的这个僵局呢?
首先,最重要的还是心态 。为什么这么说,因为从事互联网开发工作,程序员的压力其实还是蛮大的,在高强度的日常工作中,就需要我们以良好的心态来面对自己的工作。其次,就是要学会释放压力,以正确的方式来释放或者缓解自己心中的压力。

其次,就是关键的一点,你要从心底问自己是否对现在的工作感兴趣。 其实,我们都知道,只要是做我们自己感兴趣的事情,就会事半功倍,如果是出于某种原因不得不去做某件事,这样往往会是投入了很大的精力,效果往往还不太好,这就是我们常说的事倍功半。
经常有小伙伴在微信上私信我:我是学Java呢?还是学Python呢?哪个吃香啊?哪个好找工作啊?学习大数据怎么样啊?大数据是不是已经饱和了啊?这一连串的问题,其实,我看到小伙伴们的这些问题,我都不知道如何回答。为什么呢?其实这些问题,小伙伴们心里应该都清楚:只要你足够认真的坚持学下去,学什么都能够找到一份好工作。
究其本质, 对于我们这些搞技术的人来说,年龄的增长其实没有外界说的那么可怕,真正可怕的是你的年龄和你所掌握的技术深度没有匹配。如果你的年龄与你的技术深度不匹配时,你是很难找到一个令自己满意的工作的。试想,如果你已经工作5、6年了,你所做的工作连1、2年工作经验甚至是应届毕业生都能做时,那公司为啥还要你来做呢?给你养老吗?公司是要盈利的,盈利就意味着要赚钱。怎么赚钱?节省成本就是一种赚钱的方式,那不好意思,你就会被淘汰掉。
所以,在技术这条道路上,你也需要选择一个自己感兴趣的方向。比如:Java、Python、大数据、云计算、云原生等等。接下来,就是深入学习了。要知道: 再牛逼的技术,也抵不过傻逼似的坚持。 只要坚持,就没有学不会的技术。在学习的过程中,一定要明确自己学什么,切记不要三心二意。不要今天学习Java,明天又想学习Python了。一定要给自己制定一个目标,并将目标拆分为每天的学习计划。

调整好心态后,我们再来看看需要学习哪些内容。
夯实基础
首先,就是要夯实自己的基础。比如对Java集合框架,多线程与并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。

比如一般面试都会问 ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的。而且一般人这关都过不了,还发牢骚说这些没什么用,为什么要面试。
这里,我给大家举一个我所经历的项目的真实案例。
之前,我所在的公司,在做一个高并发电商项目时,一名开发同学在项目中,因为使用了默认的创建线程池的方式,导致线程池中使用了默认的无界队列,在远程服务异常情况下导致内存飙升。最终通过排查源码定位到问题,将其修改为有界队列,解决了问题。试想,你要是连线程池都不清楚,你怎么去玩?
再举一例,由于对 ThreadLocal 理解出错,使用它做线程安全的控制,导致没能实现真的线程安全。此时,你会怎么解决这个问题?所以,基础很重要,一定要把基础学扎实。万丈高楼平地起,只有把基础搞扎实了,上层建筑才会更加牢固。
关于这一点,我们需要从底层说起,你起码得深入了解 MySQL,Redis,MongoDB,Nginx,Tomcat,RPC,JMS、Dubbo、SpringCloud、SpringCloud Alibaba、性能调优、Netty、服务注册发现、服务治理、各种中间件、互联网工程、并发编程、分布式、微服务、云原生等等方面的知识。

你要问需要了解到什么程度,这里,我可以给你举几个例子:首先对于 MySQL,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化 SQL,怎么根据执行计划去调优。掌握如何去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这些也需要你多多少少掌握。
然后 Redis,Mongodb 都是需要了解原理,需要会调整参数的。而 Nginx 和 Tomcat 几乎都是 JAVA 互联网开发必配的Web服务器,这点,可能跟阿里的技术栈选择有点关系。至于RPC相关的就比较多了,必须了解各种网络协议,序列化技术,SOA 等等,你要有一个深入的理解。现在应用比较广的 RPC 框架,在国内就是 dubbo 了,小伙伴们可以到Dubbo的官网进行学习,也可以到github下载源码进行学习。至于其他的嘛,就需要小伙伴们自己去研究了。总之,掌握它们,对你没坏处。
我这里说的硬核能力,指的就是:编程能力,编程思想,算法能力,架构能力、设计能力、沟通能力、调优能力、系统驾驭能力、行业影响力。这里,我就简单的说下,除了基础部分和互联网技术需要掌握的技能外,还有几个是必须要掌握的,那就是:编程能力、编程思想、算法能力、架构能力、设计能力、沟通能力、调优能力、系统驾驭能力、行业影响力。

编程能力这个我觉得不好去评价,但是拿一个 5000W 用户根据姓名年龄排序这种题目也能信手拈来。问你个 AOP 和 IOC 你起码要清清楚楚,设计模式不说每种都用过,但也能了解个几种吧。对于算法来说,你需要掌握基本的算法知识吧。其实,开发一个系统时,很多地方都需要考虑使用算法来实现。有些小伙伴认为自己是做业务开发的,用不到算法,不需要学习算法啊,其实这种思想就是错误的!!
然后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没有坑吧。最后是要提升自己的系统设计能力、沟通能力、系统调优能力和系统驾驭能力,逐步提升自己的行业影响力!
好了,今天就到这儿吧,我是冰河,大家有啥问题可以在下方留言,一起交流技术,一起进阶,一起进大厂。后面再给大家推荐一些书单,如果你也想毕业五年年薪达到甚至超过百万,就请在下方留言吧,让我知道你的想法~
作者;CSDN博主 冰 河
来源: sql server 2012 备份集中的数据库备份与现有的xxx数据库不同_MsSql_脚本之家
SQL Server 2005备份的数据库还原到SQL Server 2012失败,错误信息如下:

解决方法
由于是还原完整数据库备份,因此删除SQL Server 2012同名数据库再还原,还原成功:


来源: 使用宝塔网站加速插件来加速网站速度,优化网站 – 知乎
宝塔网站加速 是宝塔面板推出的一款网站加速插件,实测博客类网站加速效果很好。
原理是:在http协议层,对动态页面进行缓存,对需要实时信息及已登录的会话跳出缓存,此技术主要针对匿名访问的用户进行加速响应,以减少应用服务器和数据库的开销。
内容型网站: 如wordpress, phpcms, 各类企业站,cms,博客,商城等有最佳加速效果
交互型网站: 如 discuz,HYBBS等效果良好
其它网站: 对纯静态、后台管理系统, 如 各类OA系统,API接口等没有加速的意义
只需简单几步,即可完成加速配置


