<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[thelastsinger的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/thelastsinger</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; thelastsinger]]></copyright><item><title><![CDATA[知网文件CAj转pdf（可选中文字）的开源工具]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/123633012</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/123633012</guid><author>thelastsinger</author><pubDate>Mon, 21 Mar 2022 13:17:55 +0800</pubDate><description><![CDATA[caj2pdf
下载链接 https://github.com/caj2pdf/caj2pdf/
下载后解压

添加依赖项
pip install PyPDF2

下载mutool
mutool
解压这个mudpf工具
解压出来的文件放在caj2pdf文件夹下
用法
# 打印文件基本信息（文件类型、页面数、大纲项目数）
caj2pdf show [input_file]

# 转换文件
caj2pdf convert [input_file] -o/--output [output_file]

# 从 C]]></description><category></category></item><item><title><![CDATA[sumo画轨迹图]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/122912650</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/122912650</guid><author>thelastsinger</author><pubDate>Sun, 13 Feb 2022 19:25:26 +0800</pubDate><description><![CDATA[sumo画类似下面的轨迹图

生成仿真数据
在sumo配置文件.sumocfg中加入out相关的行，并设定要输出的数据写到哪个文件，这个文件需要提前创建，每次数据都会被覆盖。

打开sumo目录下的tools目录，其中有一个plot_trajectories文件可以直接将得到的数据文件化成图，
sumo可视化详情见官网 https://sumo.dlr.de/docs/Tools/Visualization.html
python tools/plot_trajectories.py fcd.xml -t ]]></description><category></category></item><item><title><![CDATA[SUMO用自带的生成随机车流错误，不可通行]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/121078357</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/121078357</guid><author>thelastsinger</author><pubDate>Mon, 01 Nov 2021 13:28:44 +0800</pubDate><description><![CDATA[optParser.add_option("--validate", default=True, action="store_true",
                         help="Whether to produce trip output that is already checked for connectivity")

randomTrip.py里的这个选项改为true

]]></description><category></category></item><item><title><![CDATA[常见的web网络攻击及解决方法]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120335650</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120335650</guid><author>thelastsinger</author><pubDate>Thu, 16 Sep 2021 19:50:44 +0800</pubDate><description><![CDATA[XSS攻击
指的是跨脚本攻击，指的是插入一段JS，用户浏览页面时，它会自动执行实行攻击。攻击者在网页中嵌套，恶意脚本程序，当用户打开网页时，程序开始在浏览器上启动，盗取用户的cooks，从而盗取密码等信息，下载执行木马程序。
方式：

通过输入框
通过URL
通过恶意路由器

解决方案：
任何UI输入域，必须转码编译，URL编码，过滤掉特殊的&lt;script&gt;标签等
CSRF攻击
跨站请求伪造，主要是利用用户登录信息，如Cookie信息，通过黑客网站做一些恶意攻击。
方式：
利用server端的漏]]></description><category></category></item><item><title><![CDATA[动态规划的一维优化问题]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088575</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088575</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:18:17 +0800</pubDate><description><![CDATA[举个例子，0-1背包转移方程如下

dp数组第i行所依赖的其实都在第i-1行
故可以减去一维
关键思想在于如何实现dp[c] = max(dp[c],dp[c-v[i]]+w[i])
这里最大的问题是式子里，左边的代表第i行,右边的代表第i-1行，dp数组i-1行的值不能在使用之前被第i行的替换掉了，故选择从C-&gt;0的顺序遍历。需要确保dp[c-v[i]]存储的是上一行的值，即确保还没有被更新，所以遍历方向是从大到小即
 for (int i = 0; i &lt; N; i++) {
       ]]></description><category></category></item><item><title><![CDATA[查找第N高的薪水]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088515</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088515</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:15:16 +0800</pubDate><description><![CDATA[思路1：单表查询
由于本题不存在分组排序，只需返回全局第N高的一个，所以自然想到的想法是用order by排序加limit限制得到。需要注意两个细节：
同薪同名且不跳级的问题，解决办法是用group by按薪水分组后再order by
排名第N高意味着要跳过N-1个薪水，由于无法直接用limit N-1，所以需先在函数开头处理N为N=N-1。
注：这里不能直接用limit N-1是因为limit和offset字段后面只接受正整数（意味着0、负数、小数都不行）或者单一变量（意味着不能用表达式），也就是说想取一]]></description><category></category></item><item><title><![CDATA[生产者消费者模式]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088470</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088470</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:11:30 +0800</pubDate><description><![CDATA[public class Privider_Comsumer {


    public static void main(String[] args) {
        Data data = new Data();
        new Thread(()-&gt;{
            try {
                while(true){
                    data.increment();
                }


           ]]></description><category></category></item><item><title><![CDATA[死锁简单写法]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088458</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088458</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:10:08 +0800</pubDate><description><![CDATA[public class Deadlock {
    public static void main(String[] args) {
        String a = "lockA";
        String b = "lockB";
        new Thread(new Mythread(a,b),"t1").start();
        new Thread(new Mythread(b,a),"t2").start();
    }
}
class  Mythread imp]]></description><category></category></item><item><title><![CDATA[懒汉单例及反射破解]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088421</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088421</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:07:48 +0800</pubDate><description><![CDATA[TCP及UDP首部各个字段
TCP和UDP首部介绍
TCP三次握手四次挥手
TCP三次握手四次挥手

]]></description><category></category></item><item><title><![CDATA[长连接和短连接]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088390</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088390</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:07:05 +0800</pubDate><description><![CDATA[TCP/IP
TCP/IP是个协议组，可分为三个层次：网络层、传输层和应用层。
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层中有TCP协议与UDP协议。
在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议
UDP包括DNS、TFTP等协议
短连接
连接-&gt;传输数据-&gt;关闭连接
HTTP是无状态的，浏览器和服务器每进行一次HTTP操作，就建立一次连接，但任务结束就中断连接。
也可以这样说：短连接是指SOCKET连接后发送后接收完数据后马上]]></description><category></category></item><item><title><![CDATA[关于CAS等原子操作]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088380</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088380</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:05:00 +0800</pubDate><description><![CDATA[#关于CAS等原子操作
在开始说无锁队列之前，我们需要知道一个很重要的技术就是CAS操作——Compare &amp; Set，或是 Compare &amp; Swap，现在几乎所有的CPU指令都支持CAS的原子操作，X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作，我们就可以用其来实现各种无锁（lock free）的数据结构。
这个操作用C语言来描述就是下面这个样子：意思就是说，看一看内存*reg里的值是不是oldval，如果是的话，则对其赋值newval。
int compare_and_]]></description><category></category></item><item><title><![CDATA[HTTP 请求方法和应用场景]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088353</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088353</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:03:42 +0800</pubDate><description><![CDATA[#HTTP 请求方法和应用场景
根据 HTTP 标准，HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法： GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法：OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

##应用场景
##GET
基于“URL”地址问号传参；
一般用于向服务器获取资源，例如查询数据库的数据等；
成功返回200
##POST
基于“请求”主体把消息发送给服务器；
一般用于请求新增或修改资源，例如提交表]]></description><category></category></item><item><title><![CDATA[狂神Java注解与反射]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088316</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088316</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 19:00:25 +0800</pubDate><description><![CDATA[https://static.app.yinxiang.com/embedded-web/profile/#/join?guid=2172e054-465d-422d-b44a-bb9a89b8e07b&amp;channel=copylink&amp;shardId=s22&amp;ownerId=30862041

]]></description><category></category></item><item><title><![CDATA[数据库知识点]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/120088273</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/120088273</guid><author>thelastsinger</author><pubDate>Fri, 03 Sep 2021 18:58:45 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/ThinkWon/article/details/104778621?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162241626716780265459799%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&amp;request_id=162241626716780265459799&amp;biz_id=0&amp]]></description><category></category></item><item><title><![CDATA[2021-08-02]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/119306225</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/119306225</guid><author>thelastsinger</author><pubDate>Mon, 02 Aug 2021 00:16:13 +0800</pubDate><description><![CDATA[面相接口编程
分析问题，将问题中共性的问题抽象出来，设计接口，根据接口编程，提高代码的扩展性和复用性，降低耦合性。

]]></description><category></category></item><item><title><![CDATA[PAT B1024/A1073 科学计数法（纯字符串string操作）]]></title><link>https://blog.youkuaiyun.com/thelastsinger/article/details/88750171</link><guid>https://blog.youkuaiyun.com/thelastsinger/article/details/88750171</guid><author>thelastsinger</author><pubDate>Fri, 22 Mar 2019 20:35:39 +0800</pubDate><description><![CDATA[本人计算机萌新，初学c++将该题作为stl中的string各种操作的练习
写的较为繁琐，但起到了练习和理解string的操作的作用
#include
#include
using namespace std;
int main()
{
int mark=100000,z=0,k,dotp,ep,cha;
char p1,p2;
string str,str2=".",str3=“0”,str4=“...]]></description><category></category></item></channel></rss>