首页 » codingbaby

最近研究http协议,对TCP/IP分层和做下对比,不得不说tcp/ip的设计者真的聪明,用分治的方法来处理复杂的网络处理。

1.TCP/IP分层可以总结为:应用层(如http,一般绑定到端口)向传输层(TCP)层要连接,传输层向IP层要ip路由,IP层向链路层要mac地址寻址。反之亦然。

  • 应用层(http,stmp)
  • 数据传输层(tcp,udp)
  • 网络层(ip)
  • 链路层(mac)
  1. OSI 是为了统一标准设计的
  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层(光缆,网线)

我们可以这么理解,tcp/ip去掉了下面物理层,合并了上面的3层

最近看java 代码优化,总结下java 代码常见调优策略

1.优化代码

  • 比如不要for循环来访问linkedlist,使用iterator

2.优化设计

  • 比如使用单例设计模式来优化对象的创建

3.优化算法

  • 这个可以去研究算法了,提高代码的执行效率

4.时间换空间

  • 空间要求苛刻的场景,不追求时间,节约空间-----比如String.intern,解决字符串的存储空间,访问上略微降低了效率

5.空间换时间

  • mysql的分库分表,也可以理解成一种空间换时间。mysql超过千万级,就会出现读写速度变慢。

6.参数调优

  • 针对业务场景,调节系统,jvm,servlet容器参数,比如直接将大对象放入老年代。

总结:调优策略只是其中一环,上线前我们要做性能基准测试(benchmark)--->自下而上排查性能问题--->确定调优策略(此文种的6种)--->除了调优,还要兜底,因为再怎么调,我们系统也是有极限的,那么兜底策略有限流熔断,还有扩容(根据流量实时扩容,或者预测性提前扩容,比如秒杀活动时,提前扩容。)

阿里云学生机到期了,正好双11搞活动,219撸了一个3年的。为我的博客搬家,记录下

1.老规矩,先安装lnmp https://lnmp.org

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

2.阿里云需要开放端口,具体看阿里云操作文档。此处忽略

3.这里记录下xshell的问题,回退键不能用,, [文件]–>[打开]–>在打开的session中选择连接的那个 ,点击properties -> [Terminal ] -> [VT Modes] ,在右边的最后一个设置项选择Normal(或者第三个设置为Normal)

4.导出原来数据,注意修改密码,原来的文件全部拷贝过来

mysqldump -u root -padmin123 typecho > typecho.sql

5.导入数据

create_db_sql="create database IF NOT EXISTS typecho"
mysql -u root -padmin123 -e "${create_db_sql}"
mysql -u root -padmin123 typecho < typecho.sql

6.添加https支持 https://www.greenhtml.com/archives/lnmp-typecho-aliyun-ssl-enable.html ,注意不需要申请证书,按说明拿到key就好,用lnmp添加

 
export Ali_Key="134123"
export Ali_Secret="134" 
lnmp dnsssl ali

7.按步骤填入目录域名即可,另外需要上传文件权限

mkdir -p /home/wwwroot/usr/uploads
chmod -R 777 /home/wwwroot/usr/uploads

对比几个主流的消息中间件

1.rabbitmq

  • 轻量,迅捷
  • producer 和queue之间多了个exchange,适合自定义路由的场景
  • 性能相对最差,每秒处理几万到几十万消息
  • 消息堆积不友好,设计理念认为消息不应该堆积

2.rocketmq

  • 性能好,比肩kafka,每秒几十万消息
  • 相应快,毫秒级相应,适合业务系统,金融类
  • 对大数据比kafka不友好
  1. kafka
  • 性能好,每秒几十万
  • 消息合并发送,消息少了,响应反而慢。

总结:简单易用用rabbit;低延迟,金融级稳定用rocket; 海量消息,日志,大数据集成用kafka

bash中判断curl返回状态码

代码如下:


response=$(
    curl https://greenhtml.com/asdf/rer.html \
        --write-out %{http_code} \
        --silent \
        --output /dev/null \
)

echo $response 
if test "$response" -ge 200 && test "$response" -le 299 
then 
echo 'check point success'
else 
echo 'check point fail'
exit 1
fi