sub

Go语言简单源代码剖析

僤鯓⒐⒋嵵緔 提交于 2019-12-09 11:40:34
https://github.com/beego/samples/tree/master/WebIM 项目在github上面的地址 是beego提供的一个应用小项目,只是对本人第一次剖析go语言的一个小记录,也算自己剖析代码的思路记录,希望对他人也能有所帮助 (1)阅读readme文档,知晓项目大致内容,项目用到的各种配置文件 (2)查看main包文件 WebIM.go import ( "github.com/astaxie/beego" "github.com/beego/i18n" "samples/WebIM/controllers" ) const ( APP_VER = "0.1.1.0227" ) func main() { beego .Info (beego .BConfig .AppName , APP_VER) // Register routers. beego .Router ( "/" , &controllers .AppController {}) // Indicate AppController .Join method to handle POST requests. beego .Router ( "/join" , &controllers .AppController {}, "post:Join" ) // Long polling.

链接二手房数据可视化

梦想与她 提交于 2019-12-08 21:26:05
使用python3.7对链家网中广州二手房的交易数据进行爬取,并使用python-highcharts对爬取到的数据进行可视化分析。 首先,配置需要的环境: 打开终端cmd,进入pip所在的目录,安装python-highcharts库: pip install python-highcharts 对链家网进行数据爬虫,得到json格式的数据: LianJia_by_json.py from selenium import webdriver from bs4 import BeautifulSoup import re import xlwt import urllib import json import os import time class spider: def __init__(self,driver): self.driver = driver self.chengjiao_info_dict = {} self.href_list = [] self.classification_dict = {} # self.data_json_file = 'LianJia_'+time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime())+'.json' # print(self.data_json_file) # exit(0)

大众点评搜索基于知识图谱的深度学习排序实践

余生颓废 提交于 2019-12-07 17:52:22
1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜索)带来了巨大的挑战,具体体现在如下几个方面: 意图多样 :用户查找的信息类型和方式多样。信息类型包括POI、榜单、UGC、攻略、达人等。以找店为例,查找方式包括按距离、按热度、按菜品和按地理位置等多种方式。例如用户按照品牌进行搜索时,大概率是需要寻找距离最近或者常去的某家分店;但用户搜索菜品时,会对菜品推荐人数更加敏感,而距离因素会弱化。 业务多样 :不同业务之间,用户的使用频率、选择难度以及业务诉求均不一样。例如家装场景用户使用频次很低,行为非常稀疏,距离因素弱,并且选择周期可能会很长;而美食多为即时消费场景,用户行为数据多,距离敏感。 用户类型多样 :不同的用户对价格、距离、口味以及偏好的类目之间差异很大;搜索需要能深度挖掘到用户的各种偏好,实现定制化的“千人千面”的搜索。 LBS的搜索 :相比电商和通用搜索,LBS的升维效应极大地增加了搜索场景的复杂性。例如对于旅游用户和常驻地用户来说,前者在搜索美食的时候可能会更加关心当地的知名特色商户,而对于距离相对不敏感。 上述的各项特性,叠加上时间、空间、场景等维度,使得点评搜索面临比通用搜索引擎更加独特的挑战。而解决这些挑战的方法

(十四)Android NDK混淆

一笑奈何 提交于 2019-12-07 15:09:40
1、ollvm下载编译 我的是macbook环境。 参考obfuscator官网: https://github.com/obfuscator-llvm/obfuscator/wiki 执行下面的命令下载并编译: $ git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git $ mkdir build $ cd build $ cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/ $ make -j7 cmake找不到的话,上cmake.org官网下载,并设置环境变量。 编译成功后,生成的文件主要在build/bin 和 build/lib 这2个文件夹。 2、整合到NDK 网上别人有介绍在NDK目录手动创建llvm之类的新文件夹,拷贝build/bin 和 build/lib2个文件夹,有编译问题,懒得去折腾。 我的做法是: 找到Android SDK目录中的 ../ndk-bundle/toolchains/llvm 文件夹,先备份下llvm文件夹,然后将obfuscator编译好的build/bin 和 build/lib2个文件夹直接拷贝到../llvm/prebuilt/darwin-x86_64/文件夹下,直接覆盖替换。

一文教你学会递归解题

↘锁芯ラ 提交于 2019-12-06 23:48:32
前言 递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点 最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间/空间复杂度,而时间/空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等),换句话说,如果能解决递归的算法复杂度,其他算法题题的时间复杂度也基本不在话下。另外,递归算法的时间复杂度不少是不能接受的,如果发现算出的时间复杂度过大,则需要转换思路,看下是否有更好的解法 ,这才是根本目的,不要为了递归而递归! 本文试图从以下几个方面来讲解递归 什么是递归? 递归算法通用解决思路 实战演练(从初级到高阶) 力争让大家对递归的认知能上一个新台阶,特别会对递归的精华:时间复杂度作详细剖析,会给大家总结一套很通用的求解递归时间复杂度的套路,相信你看完肯定会有收获 什么是递归 简单地说,就是如果在函数中存在着调用函数本身的情况,这种现象就叫递归。 以阶乘函数为例,如下, 在 factorial 函数中存在着 factorial(n - 1) 的调用,所以此函数是递归函数 public int factorial(int n) { if (n < =1) { return 1;

Openjudge 1.6 一位数组

假如想象 提交于 2019-12-06 15:03:14
1.6.7 有趣的跳跃 有关于数组的排序(sort) #include <cstdio> #include <cstring> #include <cstdio> #include <iostream> #include <algorithm> using namespace std; int main(){ int n; scanf("%d",&n); if(n==1){ printf("Jolly"); return 0; } int a[n+5]; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } int sub[n+5]; for(int i=1;i<n;i++){ sub[i]=abs(a[i+1]-a[i]); //printf("%d \n",sub[i]); } sort(sub+1,sub+n); //for(int i=1;i<n;i++){ // printf("%d \n",sub[i]); //} sub[0]=0; int j=0; bool q=1; while(sub[j+1]-sub[j]==1){ if(j+1==n-1) { q=0; break; } j++; } if(q==0) printf("Jolly"); else printf("Not jolly"); return 0; } 注意: 1

js原型链理解(4)-经典继承

徘徊边缘 提交于 2019-12-06 14:15:44
经典继承就是组合继承,就是组合构造函数和原型链的优点混合继承。 1.避免引用类型的属性初始化 2.避免相同方法的多次初始化 function Super(name){ this.ages = [100,200,300]; this.name = name; } Super.prototype.print = function(){ console.log(this.ages); } function Sub(name){ Super.call(this,name); } Sub.prototype = new Super(); Sub.prototype.getName = function(){ console.log("getName"); } var subobj = new Sub('subobj'); 来源: https://www.cnblogs.com/chenyi4/p/11988900.html

stack smashing detected解决过程

旧城冷巷雨未停 提交于 2019-12-06 14:09:57
在执行程序结束return 0 之后出现上图问题。主要原因是在程序中存在数组越界。 解决方法: 1. 查看定义的结构体内buffer大小,为4096字节 typedef struct { UINT32 len; BYTE buf[4096]; } ctrust_tpm2_combuf_t 2. 查看要存储的结构体TPMS_CONTEXT大小为5208字节      sizeof(TPMS_CONTEXT) 3. 在memcpy拷贝时,要添加字节大小限制条件 if (sizeof(TPMS_CONTEXT) > 4096) { sub_context->len = 4096; } else { sub_context->len = sizeof(TPMS_CONTEXT); }   memcpy(&sub_context->buf, (BYTE *)&context, sub_context->len); 来源: https://www.cnblogs.com/wenkyme/p/11988620.html

Redis:pub/sub实现消息发布/订阅

核能气质少年 提交于 2019-12-06 12:44:30
转载自 http://www.runoob.com/redis/redis-pub-sub.html Redis 发布订阅 Redis 的 Pub/Sub 可以用来实现简单的订阅机制。一个或多个 client 向 Redis 订阅特定的频道,当某个 client 向这个频道发布消息时,Redis 会把消息发送给订阅该频道的 client。需要注意的是,Redis 只负责转发消息,并不保证订阅的 client 是否真正收到了消息,比如 client 可能正好挂掉了或者中间出了点网络问题。在某些情况下,这种简单的订阅机制就够用了;但在某些情况下,我们需要确保消息已经发布出去,PubSub 就不能满足要求 。针对这种情况,市面上有不少专业消息中间件可以选择,比如kafaka、rabbitmq、activemq等 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 实例 以下实例演示了发布订阅是如何工作的

2019 安洵杯 Re WP

假装没事ソ 提交于 2019-12-06 08:45:55
0x01.EasyEncryption 测试文件: https://www.lanzous.com/i7soysb 1.IDA打开 int sub_416560() { int v0; // eax int v1; // edx int v2; // edx int v3; // ecx int v4; // ST08_4 char v6[4]; // [esp+310h] [ebp-7E0h] char Str; // [esp+700h] [ebp-3F0h] int v8; // [esp+AECh] [ebp-4h] int savedregs; // [esp+AF0h] [ebp+0h] sub_41132A((int)&unk_424091); sub_411294(std::cout, "输入flag: "); sub_41113B(std::cin, &Str); sub_4111F4(&Str, (int)v6); // v6="artqkoehqpkbihv" if ( (unsigned __int8)sub_4112B7(v6) ) { sub_41105F("you are right\n"); system("pause"); sub_411339(v3, v2); } else { v0 = sub_411294(std::cout, "wrong"