Back home

ARTES #012

ARTES #012

ARTES es una actividad iniciada por 由左耳朵耗子--陈皓: Haga al menos una pregunta sobre el algoritmo leetcode cada semana, lea y comente al menos un artículo técnico en inglés, aprenda al menos una habilidad técnica y comparta un artículo con opiniones y pensamientos. (Es decir, Algoritmo, Revisión, Sugerencia y Compartir se denominan ARTS) y persisten durante al menos un año.

##ARTES 012

este es el articulo 12

Pregunta sobre el algoritmo del algoritmo

Pregunta 241 del algoritmo Leetcode. Reorganizar cadena: Dificultad: Moderada

442. Buscar todos los duplicados en una matriz

Dificultad: Media

Dada una matriz de números enteros, 1 ≤ a[i] ≤ n ( n = tamaño de la matriz), algunos elementos aparecen dos veces y otros aparecen una vez.

Encuentre todos los elementos que aparecen dos veces en esta matriz.

¿Podrías hacerlo sin espacio extra y en tiempo de ejecución O(n)?

Ejemplo:

**Input:**
[4,3,2,7,8,2,3,1]

**Output:**
[2,3]

Solución

Idioma: C

/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* findDuplicates(int* nums, int numsSize, int* returnSize) {
    
}

La idea es contar el número de veces que aparece un número. Mi implementación es la siguiente. La complejidad del tiempo es O(n); la pregunta no requiere espacio adicional. La memoria aplicada aquí se utiliza para almacenar los resultados. No sé si la complejidad del espacio se considera una violación.


int* findDuplicates(int* nums, int numsSize, int* returnSize) {
    int *charCount = (int*)malloc(sizeof(int) * (numsSize+1));
    memset(charCount, 0, sizeof(int) * (numsSize+1));
    for (int i = 0; i < numsSize; i++) {
        int data = nums[i] ;
        charCount[data]++;
    }

    * returnSize = 0;
    for (int i =0; i < numsSize +1; i++) {
        int data = charCount[i] ;
        if (data > 1) {
            charCount[(*returnSize)++] =i;
        }
    }

    return charCount;
}


Encontré una respuesta inteligente en el área de discusión, como sigue, por ejemplo, si los números de entrada son [2,3,2], la primera vez num=abs(nums[0]); El valor de num es 2 y el valor de nums correspondiente a 2-1 es 3, y luego se agrega un signo negativo. En este momento, nums es [2,-3,2]. Cuando num=abs(nums[2); Cuando se usa por tercera vez, el valor de num es 2 y el valor de nums correspondiente a -1 es -3, lo que indica que el subíndice correspondiente ya ha aparecido.

int* findDuplicates(int* nums, int numsSize, int* returnSize) {
    if(nums==NULL||numsSize<2)
    {
        *returnSize=0;
        return NULL;
    }
    *returnSize=0;
    int *result=(int *)malloc(sizeof(int)*(numsSize/2));
    for(int i=0;i<numsSize;i++)
    {
        int num=abs(nums[i]);
        if(nums[num-1]>0)
            nums[num-1]=-nums[num-1];
        else
            result[(*returnSize)++]=num;
    }
    return result;
}

Revisión

Este artículo proviene de https://medium.freecodecamp.org/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2.

Este artículo se centra en cómo los programadores deberían resolver problemas: La forma en que los nuevos programadores resuelven errores es intentarlo una y otra vez, lo cual es muy ineficiente (la forma en que los nuevos programadores resuelven errores es intentarlo una y otra vez, lo cual es muy ineficiente). El enfoque correcto debería ser establecer su propio enfoque general del problema, incluidos los siguientes pasos: 1 Lo primero que hay que hacer es descubrir el problema y comprenderlo realmente. 2. En lugar de apresurarse a resolver un problema, tómate el tiempo para analizarlo, pensar en él y hacer un plan. 3. Analizar el problema. Divida el gran problema en pequeños problemas. 4. Cuando te encuentres con un pequeño problema que sea difícil de resolver, primero no seas impaciente y tranquilízate. Puede resolverlo volviendo a examinar el problema, buscando y depurando. 5 No tengas miedo de encontrarte con problemas. Sólo resolviendo más problemas podrás mejorar tu capacidad para convertirte en un experto (no tengas miedo de encontrarte con problemas. Sólo resolviendo más problemas podrás mejorar tu capacidad para convertirte en un experto)

El detalle del artículo es el siguiente:

Cómo pensar como un programador: lecciones sobre resolución de problemas

Por Richard Reis

Si está interesado en la programación, es posible que haya visto esta cita antes: Si está interesado en la programación, probablemente haya visto esta cita:

“Todo el mundo en este país debería aprender a programar una computadora, porque te enseña a pensar”. —Steve Jobs

Probablemente también te hayas preguntado ¿qué significa exactamente pensar como un programador? Y como lo haces?? Quizás también te preguntes, ¿qué significa exactamente pensar como programador? ¿Cómo lo haces?

Básicamente, se trata de una forma más eficaz de resolver problemas. Básicamente, es una forma más eficiente de resolver un problema.

En esta publicación, mi objetivo es enseñarte de esa manera. En este artículo, mi objetivo es enseñarte de esta manera.

Al final, sabrá exactamente qué pasos seguir para resolver mejor los problemas. Al final, sabrás cómo resolver mejor el problema.

¿Por qué es esto importante?

La resolución de problemas es la metahabilidad. La resolución de problemas es una metahabilidad.

Todos tenemos problemas. Grandes y pequeños. La forma en que los tratamos a veces es, bueno… bastante aleatoria. Todos tenemos problemas. Grandes y pequeños. La forma en que abordamos estos problemas a veces es aleatoria. bastante aleatorio. aleatorio/aleatorio

A menos que tengas un sistema, probablemente así es como “resuelvas” los problemas (que es lo que hice cuando comencé a codificar): A menos que tenga un sistema implementado, probablemente esta sea la forma de “resolver” el problema (esto es lo que hice cuando comencé a codificar):

  1. Pruebe una solución.
  2. Si eso no funciona, prueba con otro.
  3. Si eso no funciona, repite el paso 2 hasta que tengas suerte.

Mira, a veces tienes suerte. ¡Pero esa es la peor manera de resolver problemas! Y es una enorme, enorme pérdida de tiempo. Mira, a veces simplemente no tienes suerte. ¡Pero esa es la peor manera de resolver un problema! Es una gran, gran pérdida de tiempo.

La mejor manera implica a) tener un marco yb) practicarlo. La mejor manera es a) tener un marco yb) practicarlo.

"Casi todos los empleadores dan prioridad a las habilidades para la resolución de problemas.

Las habilidades para resolver problemas son casi unánimemente la calificación más importante que buscan los empleadores… más que el dominio de lenguajes de programación, la depuración y el diseño de sistemas.

Demostrar pensamiento computacional o la capacidad de analizar problemas grandes y complejos es tan valioso (si no más) que las habilidades técnicas básicas requeridas para un trabajo”. —Rango de hacker (Informe de habilidades de desarrollador de 2018)#### Tener un marco Para encontrar el marco adecuado, seguí los consejos del libro de Tim Ferriss sobre aprendizaje,“The 4-Hour Chef”. Para encontrar el marco adecuado, seguí los consejos del libro de Tim Ferriss sobre aprendizaje,

Me llevó a entrevistar a dos personas realmente impresionantes: C. Jordan Ball (en el puesto 1.º o 2.º entre más de 65.000 usuarios de Coderbyte) y V. Anton Spraul (autor del libro “Think Like a Programmer: An Introducción a la resolución creativa de problemas”).

Les hice las mismas preguntas y ¿adivinen qué? ¡Sus respuestas fueron bastante similares! Les hice la misma pregunta y ¿adivinen qué? ¡Sus respuestas fueron muy similares!

Pronto tú también los conocerás.

Nota al margen: esto no significa que hicieron todo de la misma manera. Todos somos diferentes. Serás diferente. Pero si comienzas con principios que todos consideramos buenos, llegarás mucho más lejos y más rápido. Nota al margen: Esto no significa que hagan todo de la misma manera. Todos somos diferentes. Serás diferente. Pero si empiezas con buenos principios en los que todos estemos de acuerdo, llegarás más lejos y más rápido.

“El mayor error que veo que cometen los nuevos programadores es centrarse en aprender la sintaxis en lugar de aprender a resolver problemas”. — V. Anton Spraul El mayor error que veo que cometen los nuevos programadores es centrarse en aprender la sintaxis en lugar de aprender a resolver problemas.

Entonces, ¿qué debes hacer cuando te encuentras con un nuevo problema? Entonces, ¿qué debes hacer cuando te encuentras con un nuevo problema?

Aquí están los pasos:

1. Entender

Sepa exactamente lo que se pregunta. La mayoría de los problemas difíciles lo son porque no los comprendes (de ahí que este sea el primer paso). Sepa exactamente lo que se pregunta. La mayoría de los acertijos son difíciles porque no los entiendes (de ahí este primer paso).

¿Cómo saber cuándo entiendes un problema? Cuando puedas explicarlo en un inglés sencillo. ¿Cómo sabes cuando entiendes una pregunta? Cuando puedas explicarlo en un inglés sencillo.

¿Recuerdas que te quedaste atrapado en un problema, empiezas a explicarlo y al instante ves agujeros en la lógica que no habías visto antes? ¿Recuerdas que te quedaste atrapado en un problema, empezaste a explicarlo y luego inmediatamente viste agujeros en la lógica que no habías visto antes?

La mayoría de los programadores conocen este sentimiento. La mayoría de los programadores conocen este sentimiento.

Es por eso que debes escribir tu problema, dibujar un diagrama o contárselo a alguien más (o algo así… algunas personas usan un pato de goma). Es por eso que debes escribir tu problema, dibujar un diagrama o contárselo a alguien (o algo más… algunas personas usan patitos de goma).

“Si no puedes explicar algo en términos simples, no lo entiendes”. —Richard Feynman

2. Planificar

No se lance de lleno a resolver sin un plan (y de alguna manera espere poder salir adelante). ¡Planifica tu solución! No se lance de cabeza a resolver problemas sin un plan (y la esperanza de poder salir adelante). ¡Planifica tu solución! (No te sumerjas directamente en (No te sumerjas directamente en))

Nada puede ayudarte si no puedes escribir los pasos exactos. Si no puedes escribir los pasos exactos, nada te ayudará.

En programación, esto significa no empezar a hackear de inmediato. Dale tiempo a tu cerebro para analizar el problema y procesar la información. En programación, esto significa no empezar a hackear de inmediato. Dale tiempo a tu cerebro para analizar el problema y procesar la información.

Para obtener un buen plan, responda esta pregunta: Para obtener un buen plan, responda esta pregunta:

“Dada la entrada X, ¿cuáles son los pasos necesarios para devolver la salida Y?” Dada la entrada X, ¿cuáles son los pasos necesarios para devolver la salida Y?

Nota al margen: Los programadores tienen una gran herramienta para ayudarlos con esto… ¡Comentarios! Nota al margen: Los programadores tienen una gran herramienta para ayudarlos a lograr esto… ¡Notas!

3. Dividir

Presta atención. Este es el paso más importante de todos.

No intentes resolver un gran problema. Llorarás. No intentes resolver un gran problema. Llorarás.

En su lugar, divídalo en subproblemas. Estos subproblemas son mucho más fáciles de resolver.

Luego, resuelve cada subproblema uno por uno. Comience con lo más simple. Lo más simple significa que conoces la respuesta (o estás más cerca de esa respuesta). Luego, resuelve cada subproblema uno por uno. Comience con lo más simple. El significado más simple es que conoces la respuesta (o estás más cerca de esa respuesta).

Después de eso, lo más simple significa que la resolución de este subproblema no depende de que se resuelvan otros. Después de esto, el enfoque más simple significa que la solución de un subproblema no depende de la solución de otros problemas.

Una vez que resuelvas cada subproblema, conecta los puntos. Una vez que hayas resuelto cada subproblema, conecta los puntos.

Conectar todas sus “subsoluciones” le dará la solución al problema original. ¡Felicidades! Conectar todas las “subsoluciones” le dará la solución al problema original. ¡Felicidades!

Esta técnica es la piedra angular de la resolución de problemas. Recuérdalo (lee este paso nuevamente, si es necesario). Esta técnica es la piedra angular de la resolución de problemas. Memorízalo (lee este paso nuevamente si es necesario).> “Si pudiera enseñar a cada programador principiante una habilidad de resolución de problemas, sería la ‘técnica de reducción del problema’. "Si pudiera enseñar a cada programador principiante una habilidad de resolución de problemas, sería la ‘técnica de reducción del problema’. "

Por ejemplo, suponga que es un programador nuevo y se le pide que escriba un programa que lea diez números y averigüe cuál es el tercero más alto. Para un programador nuevo, esta puede ser una tarea difícil, aunque solo requiere una sintaxis de programación básica. Por ejemplo, supongamos que es un programador nuevo y se le pide que escriba un programa que lea 10 números y luego determine qué número es el tercero más alto. Esta puede ser una tarea desalentadora para un programador nuevo, aunque solo requiere una sintaxis de programación básica.

Si estás atascado, deberías reducir el problema a algo más simple. En lugar del tercer número más alto, ¿qué tal si buscamos el más alto en general? ¿Todavía es demasiado duro? ¿Qué tal encontrar el mayor de sólo tres números? ¿O el mayor de dos? Si te quedas atascado, deberías simplificar el problema. En lugar del tercer número más alto, ¿cómo encontrar el número más alto en general? ¿Sigue siendo demasiado duro? ¿Qué tal encontrar el mayor de tres números? ¿O el más grande de los dos?

Reducir el problema hasta el punto en que sepas resolverlo y escribir la solución. Luego expanda ligeramente el problema y reescriba la solución para que coincida, y continúe hasta regresar al punto de partida”. —V. Antón Spraul Simplifica el problema hasta el punto en que sepas cómo resolverlo y escribe una solución. Luego expanda un poco el problema, reescriba la solución para que coincida y continúe hasta regresar al punto de partida.

4. ¿Atascado?

A estas alturas, probablemente estés sentado pensando: “Hola, Richard… Eso está bien y todo, pero ¿qué pasa si estoy atascado y ni siquiera puedo resolver un subproblema?” Ahora, probablemente estés sentado pensando “Hola Richard…” Eso está bien, pero ¿qué pasa si estoy atascado y ni siquiera puedo resolver el subproblema?

En primer lugar, respira profundamente. En segundo lugar, eso es justo. Primero, respira profundamente. En segundo lugar, es justo.

Pero no te preocupes, amigo. ¡Esto le pasa a todo el mundo! No te preocupes, amigo. ¡Esto le pasa a todo el mundo!

La diferencia es que los mejores programadores/solucionadores de problemas sienten más curiosidad por los errores que irritados. La diferencia es que los mejores programadores/solucionadores de problemas sienten más curiosidad por los errores/errores que estar molestos.

De hecho, aquí hay tres cosas que puede intentar cuando se enfrenta a un problema: De hecho, hay tres cosas que puedes intentar cuando te pase algo malo:

  • Depuración: recorra paso a paso su solución tratando de encontrar dónde salió mal. Los programadores llaman a esto depuración (de hecho, esto es todo lo que hace un depurador). Depuración: revise su solución e intente descubrir qué salió mal. El programador llama a esto depuración (de hecho, esto es todo lo que hace el depurador).

“El arte de depurar es descubrir lo que realmente le dijo a su programa que hiciera en lugar de lo que pensaba que le había dicho que hiciera”. —Andrés cantante El arte de depurar es descubrir qué es lo que realmente le dices a tu programa que haga, no lo que crees que le dices que haga.

  • Reevaluar: Dar un paso atrás. Mire el problema desde otra perspectiva. ¿Hay algo que pueda abstraerse de un enfoque más general? Reevaluar: dar un paso atrás. Mire este problema desde otro ángulo. ¿Hay algo que pueda resumirse en un método más general?

“A veces nos perdemos tanto en los detalles de un problema que pasamos por alto principios generales que resolverían el problema a un nivel más general. […] “A veces quedamos tan atrapados en los detalles de un problema que perdemos de vista los principios generales para resolver problemas a un nivel más general”.

El ejemplo clásico de esto, por supuesto, es la suma de una larga lista de números enteros consecutivos, 1 + 2 + 3 +… + n, que un Gauss muy joven rápidamente reconoció que era simplemente n(n+1)/2, evitando así el esfuerzo de tener que hacer la suma”. -DO. Balón de Jordania Por supuesto, el ejemplo más clásico es la suma de una larga lista de números enteros consecutivos, 1 + 2 + 3 +…+ n, que un Gauss muy joven reconoció rápidamente como n(n+1)/2, de modo que no hubo necesidad de sumar más.

Nota al margen: Otra forma de reevaluar es empezar de nuevo. Elimina todo y comienza de nuevo con ojos nuevos. Lo digo en serio. Te sorprenderá lo efectivo que es esto. Nota al margen: otra forma de reevaluar es empezar de nuevo. Borra todo y comienza de nuevo con ojos nuevos. Lo digo en serio. Te sorprenderá lo efectivo que es esto.

  • Investigación: Ahh, buen Google. Has leído bien. No importa el problema que tengas, probablemente alguien lo haya solucionado. Encuentra a esa persona/solución. De hecho, ¡haga esto incluso si resolvió el problema! (Puedes aprender mucho de las soluciones de otras personas). Investigación: Ah, bien. Has leído bien. Cualquier problema que tengas, probablemente alguien lo haya solucionado. Encuentra a esa persona/solución. De hecho, ¡hazlo incluso si resuelves el problema! (Puedes aprender mucho de las soluciones de otras personas).

Advertencia: no busque una solución al gran problema. Busque únicamente soluciones a subproblemas. ¿Por qué? Porque a menos que luches (aunque sea un poquito), no aprenderás nada. Si no aprendes nada, perdiste el tiempo. Nota: No busques soluciones a grandes problemas. Encuentre solo soluciones a subproblemas. ¿Por qué? Porque a menos que lo intentes (aunque sea un poquito), no aprenderás nada. Si no aprendes nada, estás perdiendo el tiempo.

Practica

No esperes ser genial después de sólo una semana. Si quieres ser un buen solucionador de problemas, ¡resuelve muchos problemas! No esperes ser genial en solo una semana. Si quieres ser un buen solucionador de problemas, ¡resuelve muchos problemas!

Práctica. Práctica. Práctica. Sólo será cuestión de tiempo antes de que reconozcas que “este problema podría resolverse fácilmente con <insertar concepto aquí>”. Práctica. Práctica. Práctica. Tarde o temprano te darás cuenta de que “este problema se puede resolver fácilmente con <insertar concepto aquí>”.

¿Cómo practicar? ¡Hay opciones increíbles! ¿Cómo practicar? ¡Hay muchas opciones!Ajedrez, problemas de matemáticas, Sudoku, Go, Monopoly, videojuegos, cryptokitties, bla… bla… bla…. juego de ajedrez, problemas de matemáticas, sudoku, monopolio, videojuegos, cryptokitties, bla bla bla…

De hecho, un patrón común entre las personas exitosas es su hábito de practicar la “resolución de microproblemas”. Por ejemplo, Peter Thiel juega al ajedrez y Elon Musk juega a videojuegos. De hecho, un patrón común entre las personas exitosas es que practican la resolución de microproblemas. Por ejemplo, Peter Thiel juega al ajedrez y Elon Musk juega a los videojuegos.

“Byron Reeves dijo: ‘Si quieres ver cómo será el liderazgo empresarial dentro de tres a cinco años, mira lo que está sucediendo en los juegos en línea’. "Byron Reeves dijo: ‘Si quieres saber cómo será el liderazgo empresarial dentro de tres a cinco años, mira lo que está sucediendo en los juegos en línea’. ’”

Avance rápido hasta el día de hoy. Elon [Musk], Reid [Hoffman], Mark Zuckerberg y muchos otros dicen que los juegos han sido fundamentales para el éxito en la construcción de sus empresas”. — Mary Meeker (Informe de tendencias de Internet de 2017) Avance rápido hasta el día de hoy. Elon Musk, Reid Hoffman, Mark Zuckerberg y muchos otros han dicho que los juegos eran la piedra angular del éxito de sus empresas.

¿Significa esto que deberías simplemente jugar videojuegos? De nada. ¿Significa esto que sólo deberías jugar videojuegos? De nada.

¿Pero de qué se tratan los videojuegos? Así es, ¡resolución de problemas! ¿Pero de qué se tratan exactamente los videojuegos? ¡Sí, problema resuelto!

Entonces, lo que debes hacer es encontrar una salida para practicar. Algo que te permita solucionar muchos microproblemas (idealmente, algo que disfrutes). Entonces, lo que debes hacer es encontrar una salida para practicar. Algo que te permita resolver muchos pequeños problemas (idealmente, algo que disfrutes).

Por ejemplo, disfruto los desafíos de codificación. Todos los días intento resolver al menos un desafío (normalmente en Coderbyte). Por ejemplo, me encantan los desafíos de programación. Todos los días intento resolver al menos un desafío (normalmente en Coderbyte).

Como dije, todos los problemas comparten patrones similares. Como dije, todas las preguntas tienen patrones similares.

Conclusión

¡Eso es todo amigos! ¡Estos son todos!

Ahora sabes mejor lo que significa “pensar como un programador”. Ahora ya sabes lo que significa “pensar como un programador”.

También sabes que la resolución de problemas es una habilidad increíble que puedes cultivar (la metahabilidad). También sabes que la resolución de problemas es una habilidad increíble (metahabilidad).

Como si eso no fuera suficiente, ¡observa cómo también sabes qué hacer para practicar tus habilidades para resolver problemas! Si eso no es suficiente, ¡tenga en cuenta que también sabe cómo practicar habilidades para resolver problemas!

Uf… Muy bien, ¿verdad? Genial, ¿verdad?

Finalmente, deseo que encuentres muchos problemas. Finalmente te deseo muchos problemas.

Has leído bien. ¡Al menos ahora sabes cómo solucionarlos! (Además, aprenderá que con cada solución, mejora). Has leído bien. ¡Al menos ahora sabes cómo solucionarlo! (Además, aprenderá que mejorará con cada solución).

“Justo cuando crees que has superado con éxito un obstáculo, surge otro. Pero eso es lo que hace que la vida sea interesante.[…] Justo cuando crees que has superado con éxito un obstáculo, aparece otro. Pero eso es lo que hace que la vida sea interesante.

La vida es un proceso de superar estos impedimentos: una serie de líneas fortificadas que debemos superar. La vida es un proceso de romper estas barreras, una serie de defensas que debemos romper.

Cada vez aprenderás algo. Cada vez aprendes algo.

Cada vez, desarrollarás fuerza, sabiduría y perspectiva. Cada vez desarrollarás fuerza, sabiduría y perspicacia.

Cada vez, se pierde un poco más de la competencia. Hasta que lo único que quedes seas tú: la mejor versión de ti”. —Ryan Holiday (El obstáculo es el camino) Cada vez desaparece más competencia. Hasta convertirte en la mejor versión de ti mismo. ——Ryan Holliday (El obstáculo es el camino)

¡Ahora ve a resolver algunos problemas!

Y mucha suerte 🙂

Un agradecimiento especial a C. Jordan Ball y V. Anton Spraul. Todos los buenos consejos aquí vinieron de ellos.

Además, todos los conocimientos de programación que he adquirido en tan poco tiempo no habrían sido posibles sin Lambda School. No puedo agradecerles/recomendarlos lo suficiente.

Además, todo el conocimiento de programación que adquirí en tan poco tiempo no habría sido posible sin Lambda School. Muchas gracias/recomiéndalos.

¡Gracias por leer! 😊 Si lo disfrutaste, prueba cuántas veces puedes golpear 👏 en 5 segundos. Es un excelente ejercicio cardiovascular para tus dedos Y ayudará a que otras personas vean la historia. ¡Gracias por leer! 😊 Si te gusta, prueba cuántas veces puedes golpearlo en 5 segundos. 👏 Es un excelente ejercicio cardiovascular para tus dedos y también ayudará a que otros vean esta historia.

CONSEJOS

Aprendí a usar Instrument esta semana y voy a traducir los documentos oficiales más recientes. Ya he traducido una pequeña parte del primer capítulo: https://dandan2009.github.io/2018/10/26/Instruments-chinese-translation/

Compartir

Hoy aprendí algunos términos nuevos: “red clara”, “red oscura”, “red profunda” y red en la sombra. Clearnet se refiere a la red que utilizamos habitualmente. “Web oscura”, “Web profunda”, “Web clara”, Web oscura. “Dark Web”, “Deep Web” y Shadow Web se refieren a redes que están fuera del alcance de la gente común y a las que no se puede acceder mediante métodos convencionales. La mayoría de estas redes contienen información ilegal.

El siguiente contenido proviene de Internet:

“Web oscura” DarkWeb y DeepWeb DeepWeb es una amplia gama de contenidos de Internet que los motores de búsqueda no pueden indexar. Entonces, ¿qué es Darknet (inglés: Darknet o Dark Web)? Darknet es una red a la que solo se puede conectar mediante un software especial, una autorización especial o una configuración especial de la computadora. Las direcciones de los servidores y la transmisión de datos en la web oscura suelen ser anónimas e invisibles. Por el contrario, la Internet de uso común se denomina “Clearnet” o “Clearnet” (inglés: Clearnet) porque puede rastrear su verdadera ubicación geográfica y la identidad de la persona que se comunica. Actualmente, Onion Network es reconocida como un mejor método para la comunicación anónima en Internet.

Usando Tor Usar Tor no es difícil. Si tiene acceso a Google, simplemente inicie sesión en el sitio web de Tor http://www.theonionrouter.com/下载Tor和Tor浏览器即可~

https://www.mushroomnetworks.com/

castillo de naipes El anciano de la película “Sin City”

De hecho, el término “Shadow Web” apareció recién a principios de este año, y el origen de este término proviene de una publicación en Reddit (similar al Foro Gordon de Hong Kong). Esta es también la historia que quiero presentarles hoy… una advertencia terrible.Como todas las tecnologías, hay lados buenos y malos. Cuando la red desempeña su papel de compartir información en beneficio de la humanidad, también tiene una capa estructural similar al blanco y negro en la sociedad, dando origen a tres hermanos llamados red clara, red profunda y red oscura.

El origen de la web oscura

Entonces, ¿cuándo comenzaron a desarrollarse estos sitios web? Irónicamente, al igual que la fuente de la mayoría de las tecnologías, aquí hay que mencionar al iniciador: el ejército estadounidense.

En 1996, científicos del Instituto de Investigación Naval de EE. UU. presentaron un artículo titulado “Información de rutas ocultas” y propusieron la idea de construir un sistema sigiloso que permitiría a cualquier usuario permanecer en el anonimato en tiempo real al conectarse a Internet sin revelar su identidad al servidor. La construcción de este sistema es muy necesaria. Primero, puede proteger a los disidentes políticos en varios países, escapar de la opresión autoritaria de varios países y popularizar la democracia universal a los ojos de los estadounidenses; en segundo lugar, puede proporcionar un lugar seguro para que el personal de inteligencia estadounidense intercambie información.

En octubre de 2003, esta idea comenzó a implementarse oficialmente para proporcionar a los usuarios un lugar en línea anónimo y gratuito. Debido a que las contraseñas que protegían los datos estaban envueltas como capas de una cebolla, el sistema finalmente se llamó Tor (The Onion Router). https://www.ufochn.com/article-205-1.html

https://www.aqniu.com/industry/37816.html

https://parrotsec-cn.org/t/topic/50

http://blog.sina.com.cn/s/blog_63296ead0102x95x.html

http://www.theonionrouter.com/about/torusers.html.en#normalusers

http://www.thehiddenwiki.org/

Los siguientes sitios web son algunos de los sitios web de la red oscura que Rocket encontró en el famoso sitio web thehiddenwiki.org/. Asegúrate de usar Tor para acceder a la web oscura (sitios web que terminan en .onion) Asegúrate de usar https No utilice Tor para iniciar sesión en ningún sitio web (como Baidu Netdisk, Weibo, Zhihu, etc.) No envíe ninguna información personal no solicitada sobre usted

https://www.ufochn.com/article-205-1.html