技术文章

寒假集训——Gift Hunting

痴心易碎 提交于 2021-02-17 20:47:59
题目链接 题意:买东西,有两张购物卷,v1~500,v2~50,物品分两类,一类必须买,一类选择买,并且有一次免费买东西的机会,n~300个东西。问怎么买可以最大,显然两个卷不能混着用。 题解:dp【i】【j】【k】,i和j是钱数,k表示额外的奖励,0代表没用,1代表用过了。两类物品,必须买就一定要选,选择买就是01背包。dp要倒着推(01背包),并且根据k分开写方程。 重点:多维背包,01背包倒着推,额外增加一维。 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <ctype.h> #include <limits.h> #include <cstdlib> #include <algorithm> #include <vector> #include <queue> #include <map> #include <stack> #include <set> #include <bitset> #define CLR(a) memset(a, 0, sizeof(a)) #define REP(i, a, b) for(int i = a;i < b;i++) #define REP_D(i, a, b) for(int i

encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)

风流意气都作罢 提交于 2021-02-17 20:45:44
encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) 参考文章: (1)encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) (2)https://www.cnblogs.com/zouhao/p/3672409.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4428122/blog/4953405

go的sync.Map

五迷三道 提交于 2021-02-17 20:44:24
  sync.Map这个数据结构是线程安全的(基本类型Map结构体在并发读写时会panic严重错误),它填补了Map线程不安全的缺陷,不过最好只在需要的情况下使用。它一般用于并发模型中对同一类map结构体的读写,或其他适用于sync.Map的情况。 关于sync.Map的源码解析文章: Go 1.9 sync.Map揭秘 它主要五个方法及其功能简介: 1、Store 存 key,value 2、LoadOrStore 取&存-具体看代码 3、Load 取key对应的value 4、Range 遍历所有的key,value 5、Delete 删除key,及其value package main import ( " fmt " " sync " ) func main() { var m sync.Map // Store m.Store( 1 , " a " ) m.Store( 2 , " b " ) // LoadOrStore // 若key不存在,则存入key和value,返回false和输入的value v,ok := m.LoadOrStore( " 1 " , " aaa " ) fmt.Println(ok,v) // false aaa // 若key已存在,则返回true和key对应的value,不会修改原来的value v,ok = m.LoadOrStore

YMP开发框架快速上手(一)

*爱你&永不变心* 提交于 2021-02-17 20:44:05
了解YMP框架 YMP是一个非常简单、易用的一套轻量级JAVA应用开发框架,设计原则主要侧重于简化工作任务、规范开发流程、提高开发效率。 YMP于2014年10月25日正式发布1.0版本,在此之前就已在实际项目中得到广泛使用,从最初仅限团队内部使用,到合作伙伴的开发团队,再到身边的朋友,和朋友的朋友们也开始将YMP投入到实际项目中去,所以在这里我要向一直以来帮助、支持我的这些同事、朋友们表示衷心的感谢!是大家的信赖和对它的认可,才使得YMP快速成长起来,在变化过程中它一直在不断的改进、优化直至最终对外发布。 没有完美的框架,只有适合的才是好的,为了让YMP更简单易用,从2015年1月26日正在开始了v2版本的开发,用了整一年的时间对YMP进行重构,在新版本中包含大量在v1使用过程中收集的新特性、功能改进和代码优化,万变不改初心,让开发工作像搭积木一样轻松是我们一直不懈努力的目标! 当然,框架还有很多不足,仍需要不断完善,如果觉得YMP可以帮到您,也衷心希望得到您的支持,提出您的需求、想法、意见和建议一起讨论,一起让它变得更好! YMP的主要技术特性: 采用组件化、模块化打包方式,可按需装配,灵活可扩展; 采用微内核实现Autoscan、AOP、IoC、Event等,涵盖SSH框架中绝大部分核心功能; 统一配置体系结构,感受不一样的文件资源配置及管理模式; 整合多种日志系统

小伙Python爬虫并自制新闻网站,太好玩了

空扰寡人 提交于 2021-02-17 20:43:09
作者 : 豆腐 来源:凹凸数据 大家好,我又来了, 我是银牌厨师豆腐! 我们总是在爬啊爬,爬到了数据难道只是为了做一个词云吗? 当然不!这次我就利用flask为大家呈现一道小菜。 Flask是python中一个轻量级web框架,相对于其他web框架来说简单,适合小白练手。使用Flask+爬虫,教大家如何实时展示自己爬下来的数据到网页上。 先给大家展示一下这个丑丑的网页 ↓ (给个面子,别笑 ) 演示三个功能 整个流程就是简单的三步: 爬取数据 利用实时爬取数据生成词云 利用热点推荐新闻 爬虫部分: 这次爬虫主要利用多线程方式爬取新浪新闻+网易新闻所有栏目新闻信息。 一共14个栏目,两个网站的页面信息都是通过ajax加载完成的,请求对应的栏目链接后,返回的字符串是这样的,仔细观察会发现我们要看的新闻内容被包含在 data_callback 里面 图2 是一个列表样式, 这时候我们就可以用 eval 函数将这个字符串处理成一个列表格式 def get_wy_teach () : url = 'https://tech.163.com/special/00097UHL/tech_datalist.js?callback=data_callback' headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)

浙大版《C语言程序设计(第3版)》题目集 练习2-8 计算摄氏温度 (10 分)

末鹿安然 提交于 2021-02-17 20:42:46
练习2-8 计算摄氏温度 (10 分) 给定一个华氏温度 F,本题要求编写程序,计算对应的摄氏温度 C。计算公式: C = 5 × ( F − 3 2 ) / 9。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出一个华氏温度。 输出格式: 在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。 输入样例: 150 输出样例: Celsius = 65 思路:利用题中公式。 代码如下: #include <stdio.h> int main() { int celsius, fahr; scanf("%d",&fahr); celsius=5*(fahr-32)/9; printf("Celsius = %d\n",celsius); return 0; }       来源: oschina 链接: https://my.oschina.net/u/4320155/blog/3657461

python 垃圾回收机制的思考

跟風遠走 提交于 2021-02-17 20:42:22
一、前言   Python 是一门高级语言,使用起来类似于自然语言,开发的时候自然十分方便快捷,原因是Python在背后为我们默默做了很多事情,其中一件就是垃圾回收,来解决内存管理,内存泄漏的问题。   内存泄漏:当程序不停运行,有一部分对象没有作用,但所占内存没有被释放,服务器内存随时间越来越少,最终导致系统的崩溃,所以内存泄漏是一个需要重点关注的问题。 二、引用计数   Python 标记一个对象是否还有用的方法就是用引用计数,以下情形会为该对象的计数+1:     1. 创建时     2. 被引用时     3. 作为参数传入函数时   相反,以下情形会为该对象的计数-1:     1. 被del     2. 被重引用     3. 函数执行完毕   查看某一元素的计数可以通过 sys.getrefcount(),当引用计数为0 的时候,内存就会被释放。   可以想到和其他垃圾回收相比,Python的机制优点很明显,就是实时性,Python的gc 模块就是开放的接口用以管理。   也可以很容易猜到这样的缺点就是性能相对较低,看过这样的报道,instagram 通过禁用 gc 模块,性能提升10%! 三、 循环引用   有一种特殊情况,当两个或多个变量互相循环引用的时候,按照计数引用的机制就无法处理了    a = [] b = [] a.append(b) b

常问的22道Java面试题,值得收藏【文末送书】

微笑、不失礼 提交于 2021-02-17 20:41:58
作者:爱茹一婉年 原文: https : //blog.csdn.net/qq_21924011/article/details/80399836 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet) List:元素是有顺序的,元素可以重复因为每个元素有自己的角标(索引) |-- ArrayList:底层是数组结构,特点是:查询很快,增删稍微慢点,线程不同步:A线程将元素放在索引0位置,CPU调度线程A停止,B运行,也将元素放在索引0位置,当A和B同时运行的时候Size就编程了2. |-- LinkedList:底层使用的是链表数据结构,特点是:增删很快,查询慢。线程不安全,线程安全问题是由多个线程同时写或同时读写同一个资源造成的。 |--Vector:底层是数组数据结构,线程同步,Vector的方法前面加了synchronized关键字,被ArrayList代替了,现在用的只有他的枚举。 Set:元素是无序的,且不可以重复(存入和取出的顺序不一定一致),线程不同步。set底层是使用Map实现的,故可以通过ConcurrentHashMap的方式变通实现线程安全的Set。 |--HashSet:底层是哈希表数据结构。根据hashCode和equals方法来确定元素的唯一性。

二叉树链表C++实现

半世苍凉 提交于 2021-02-17 20:40:50
结点的构造 源代码: https://github.com/cjy513203427/C_Program_Base/tree/master/57.%E4%BA%8C%E5%8F%89%E6%A0%91%E9%93%BE%E8%A1%A8%E5%AE%9E%E7%8E%B0 #pragma once #ifndef NODE_H #define NODE_H class Node { public : Node(); Node *SearchNode( int nodeIndex); void DeleteNode(); void PreorderTraversal(); void InorderTraversal(); void PostorderTraversal(); int index; int data; Node * pLChild; Node * pRChild; Node * pParent; }; #endif // !NODE_H 需要实现的方法 #pragma once #ifndef TREE_H #define TREE_H #include " Node.h " class Tree { public : Tree(); // 创建树 ~Tree(); // 销毁树 Node *SearchNode( int nodeIndex); // 搜索结点

C语言数据结构的套路

瘦欲@ 提交于 2021-02-17 20:40:27
搬运自我的CSDN https://blog.csdn.net/u013213111/article/details/93784522 跟着DSAA in C写代码,总结起来各种数据结构大概都是这个套路: 首先是定义: typedef struct XXXXX { //数据结构包含的元素 } XXX 然后分配空间, malloc(sizeof(XXX)) 对于用到数组来存储数据元素的,还要额外给数组分配空间,比如队列: Q->array = malloc(sizeof(int) * max); 最后用完之后一定要记得free! 这个套路用途广泛,比如想要把图片作为一个数据结构,首先可以这么定义: typedef struct ImgStruct { uint8_t *data; int width; int height; } Image; 然后导入图片(这里用了OpenCV,是C++,需要给函数包装一下才可以被C调用): Image *image_import(char *img_name) { Image *img; img = (Image *)malloc(sizeof(Image)); cv::Mat img_mat = cv::imread(img_name, cv::IMREAD_GRAYSCALE); img->width = img_mat.cols; img-